﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using SISTEMA_ALPROVIDE.Service;
using SISTEMA_ALPROVIDE.Bean;

namespace SISTEMA_ALPROVIDE
{
    public partial class Eliminar_Venta : Form
    {
        public Venta venta = new Venta();
        public ServiceVenta serviceVenta = new ServiceVenta();
        public List<LineaVenta> listaLineaVenta = new List<LineaVenta>();
        public Eliminar_Venta()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            int idEmpleado;
            if (!String.IsNullOrEmpty(TxtId.Text))
            {
                idEmpleado = Convert.ToInt32(TxtId.Text);
            }
            else {
                idEmpleado = 0;
            }

            int idVenta;

            if (!String.IsNullOrEmpty(textBox1.Text))
            {
                idVenta = Convert.ToInt32(textBox1.Text);
            }
            else {
                idVenta = 0;
            }

            DateTime fechaInicio = dateTimePicker1.Value;
            DateTime fechaFin = dateTimePicker2.Value;

            List<Venta> listaVenta = serviceVenta.ObtenerVenta(idEmpleado, idVenta, fechaInicio, fechaFin);

            dataGridView1.DataSource = listaVenta;

            dataGridView1.Columns[3].Visible = false;
            dataGridView1.Columns[4].Visible = false;
            dataGridView1.Columns[5].Visible = false;
            dataGridView1.Columns[6].Visible = false;
            dataGridView1.Columns[7].Visible = false;

            

        }

        private void dataGridView1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            if (e.RowIndex >= 0 && e.ColumnIndex >= -1 && e.Button == MouseButtons.Left)
            {
                venta.IdVenta = Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells[0].Value);
                venta.Fecha = Convert.ToDateTime(dataGridView1.Rows[e.RowIndex].Cells[1].Value);
                venta.Total = Convert.ToDouble(dataGridView1.Rows[e.RowIndex].Cells[2].Value);
                venta.TipoDocVenta = Convert.ToString(dataGridView1.Rows[e.RowIndex].Cells[3].Value);
                venta.IdEmpleado = Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells[4].Value);
                venta.IdTienda = Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells[5].Value);
                venta.IdPedido = Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells[6].Value);
                venta.IdCliente = Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells[7].Value);

                textBox3.Text = Convert.ToString(venta.IdEmpleado);
                textBox2.Text = Convert.ToString(venta.IdVenta);
                dateTimePicker4.Value = venta.Fecha;
                button5.Enabled = true;
                button4.Enabled = true;
                button3.Enabled = true;

                listaLineaVenta = serviceVenta.obtenerLineaVenta(venta.IdVenta);

                for (int i = 0; i < listaLineaVenta.Count; i++) {
                    listaLineaVenta[i].PrecioUnitario = listaLineaVenta[i].Subtotal / listaLineaVenta[i].CantidadProducto;
                }

                GridProductos.DataSource = listaLineaVenta;
                GridProductos.Columns[0].Visible = false;
                GridProductos.Columns[2].Visible = false;
                GridProductos.Columns[6].Visible = false;
                GridProductos.Columns[1].ReadOnly = true;
                GridProductos.Columns[3].ReadOnly = true;
                GridProductos.Columns[5].ReadOnly = true;

            }
        }

        private void button4_Click(object sender, EventArgs e)
        {
            if (DialogResult.OK == MessageBox.Show("Esta seguro que desea eliminar esta venta", "Mensaje", MessageBoxButtons.OKCancel, MessageBoxIcon.Stop)) {
                serviceVenta.EliminarVenta(venta.IdVenta);
                serviceVenta.EliminarLineaVenta(venta.IdVenta, listaLineaVenta);

                textBox3.Text = "";
                textBox2.Text = "";
                GridProductos.DataSource = null;
                dataGridView1.DataSource = null;

                button5.Enabled = false;
                button4.Enabled = false;
                button3.Enabled = false;
            }
            
        }

        private void GridProductos_CellEnter(object sender, DataGridViewCellEventArgs e)
        {
            //GridProductos[e.ColumnIndex, e.RowIndex].Style.SelectionBackColor = Color.Blue;
        }

        private void GridProductos_CellLeave(object sender, DataGridViewCellEventArgs e)
        {
            //GridProductos[e.ColumnIndex, e.RowIndex].Style.SelectionBackColor = Color.Red;
        }

        private void button5_Click(object sender, EventArgs e)
        {
            List<LineaVenta> copiaLineaVenta = serviceVenta.obtenerLineaVenta(venta.IdVenta);

            List<int> Diferencias = new List<int>();

            for (int i = 0; i < listaLineaVenta.Count; i++) {
                Diferencias.Add(listaLineaVenta[i].CantidadProducto - copiaLineaVenta[i].CantidadProducto);
            }

            venta.Total = 0;

            for (int i = 0; i < listaLineaVenta.Count; i++) {
                venta.Total += listaLineaVenta[i].Subtotal;
            }

            serviceVenta.ModificarVenta(venta.IdVenta,venta.Total);
            serviceVenta.ModificarLineaVenta(venta.IdVenta, listaLineaVenta);
            serviceVenta.ModificarStock(Diferencias, listaLineaVenta);
        }

        private void GridProductos_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {
            double valor = Convert.ToInt32(GridProductos[4, e.RowIndex].Value) * Convert.ToDouble(GridProductos[3, e.RowIndex].Value);

            GridProductos.Rows[e.RowIndex].Cells[5].Value = valor;
        }
    }
}
